$(document).ready(function () {
  // Page Loaded Styling
  $(".numbox_wrapper").hide();
  set_output();
  // Live Textbox Width
  function updateWidth() {
    var temp_span = document.createElement("span");
    temp_span.className = "temp_span"
    temp_span.innerHTML = $("#output_textbox").val().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    document.body.appendChild(temp_span);
    var span_width = temp_span.getBoundingClientRect().width;
    document.body.removeChild(temp_span);
    $("#output_textbox").width(span_width);
  }
  // Updates stuff to be correct for generation
  $('input[name=output_type]').change(function () {
    if ($("input[value=password]").is(":checked")) {
      $("#length_slider").attr({"max": 32, "value": 16});
      $(".numbox_wrapper").hide();
      $(".slider_wrapper").show();
      $("#header_title").text("Password Generator");
    } if ($("input[value=passphrase]").is(":checked")) {
      $("#length_slider").attr({"max": 16, "value": 4});
      $(".numbox_wrapper").hide();
      $(".slider_wrapper").show();
      $("#header_title").text("Passphrase Generator");
    } if ($("input[value=number]").is(":checked")) {
      $(".slider_wrapper").hide();
      $(".numbox_wrapper").show();
      $("#header_title").text("Random Number Generator");
    }
    $("#slider_value").text($("#length_slider").val());
    set_output();
  });
  function set_output() {
    if($("input[name=output_type]:checked").val()=='password') {
      $("#output_textbox").val(generate_password(16,1,1,1,0));
    } if($("input[name=output_type]:checked").val()=='passphrase') {
      $("#output_textbox").val(generate_passphrase(4));
    } if($("input[name=output_type]:checked").val()=='number') {
      $("#output_textbox").val(random_number($("#minimum_number").val(), $("#maximum_number").val()));
    }
    updateWidth();
  }
  // Live Slider Update
  $("#length_slider").on('input', function () {
    $("#slider_value").text($("#length_slider").val());
  });
  // New Password When Slider is Done
  $("#length_slider").on("change", function () {
    set_output($("input[name=output_type]:checked").val());
  })
  // Generate Button
  $("#generate_button").click(function () {
    set_output($("input[name=output_type]:checked").val());
  });
  // Select Password
  $("#select_button").click(function () {
    $("#output_textbox").focus().select();
  });
});